{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 逻辑回归-线性不可分案例\n",
    "## 案例：设想你是工厂的生产主管，你要决定是否芯片要被接受或抛弃\n",
    "## 数据集：ex2data2.txt,芯片在两次测试中的测试结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "     Test 1   Test 2  Accepted\n0  0.051267  0.69956         1\n1 -0.092742  0.68494         1\n2 -0.213710  0.69225         1\n3 -0.375000  0.50219         1\n4 -0.513250  0.46564         1",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Test 1</th>\n      <th>Test 2</th>\n      <th>Accepted</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0.051267</td>\n      <td>0.69956</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>-0.092742</td>\n      <td>0.68494</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>-0.213710</td>\n      <td>0.69225</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>-0.375000</td>\n      <td>0.50219</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>-0.513250</td>\n      <td>0.46564</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 195,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "path = 'ex2data2.txt'\n",
    "data = pd.read_csv(path, names=['Test 1', 'Test 2', 'Accepted'])\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.scatter(data[data['Accepted'] == 0]['Test 1'], data[data['Accepted'] == 0]['Test 2'], c='r', marker='x', label='y=0')\n",
    "ax.scatter(data[data['Accepted'] == 1]['Test 1'], data[data['Accepted'] == 1]['Test 2'], c='b', marker='o', label='y=1')\n",
    "ax.legend()\n",
    "ax.set(xlabel='Test1',\n",
    "       ylabel='Test2')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 特征映射"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "outputs": [],
   "source": [
    "def feature_mapping(x1, x2, power):\n",
    "    data = {}\n",
    "\n",
    "    for i in np.arange(power + 1):\n",
    "        for j in np.arange(i + 1):\n",
    "            # 这就是设置 看下面的data2.head() 的列名  x1x2的幂次  =右边是是值   例如F10 表示x1一次 x2零次\n",
    "            data['F{}{}'.format(i - j, j)] = np.power(x1, i - j) * np.power(x2, j)\n",
    "\n",
    "    return pd.DataFrame(data)\n"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1 = data['Test 1']\n",
    "x2 = data['Test 2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [],
   "source": [
    "data2 = feature_mapping(x1, x2, 6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": "   F00       F10      F01       F20       F11       F02       F30       F21  \\\n0  1.0  0.051267  0.69956  0.002628  0.035864  0.489384  0.000135  0.001839   \n1  1.0 -0.092742  0.68494  0.008601 -0.063523  0.469143 -0.000798  0.005891   \n2  1.0 -0.213710  0.69225  0.045672 -0.147941  0.479210 -0.009761  0.031616   \n3  1.0 -0.375000  0.50219  0.140625 -0.188321  0.252195 -0.052734  0.070620   \n4  1.0 -0.513250  0.46564  0.263426 -0.238990  0.216821 -0.135203  0.122661   \n\n        F12       F03  ...       F23       F14       F05           F60  \\\n0  0.025089  0.342354  ...  0.000900  0.012278  0.167542  1.815630e-08   \n1 -0.043509  0.321335  ...  0.002764 -0.020412  0.150752  6.362953e-07   \n2 -0.102412  0.331733  ...  0.015151 -0.049077  0.158970  9.526844e-05   \n3 -0.094573  0.126650  ...  0.017810 -0.023851  0.031940  2.780914e-03   \n4 -0.111283  0.100960  ...  0.026596 -0.024128  0.021890  1.827990e-02   \n\n            F51       F42       F33       F24       F15       F06  \n0  2.477505e-07  0.000003  0.000046  0.000629  0.008589  0.117206  \n1 -4.699318e-06  0.000035 -0.000256  0.001893 -0.013981  0.103256  \n2 -3.085938e-04  0.001000 -0.003238  0.010488 -0.033973  0.110047  \n3 -3.724126e-03  0.004987 -0.006679  0.008944 -0.011978  0.016040  \n4 -1.658422e-02  0.015046 -0.013650  0.012384 -0.011235  0.010193  \n\n[5 rows x 28 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>F00</th>\n      <th>F10</th>\n      <th>F01</th>\n      <th>F20</th>\n      <th>F11</th>\n      <th>F02</th>\n      <th>F30</th>\n      <th>F21</th>\n      <th>F12</th>\n      <th>F03</th>\n      <th>...</th>\n      <th>F23</th>\n      <th>F14</th>\n      <th>F05</th>\n      <th>F60</th>\n      <th>F51</th>\n      <th>F42</th>\n      <th>F33</th>\n      <th>F24</th>\n      <th>F15</th>\n      <th>F06</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1.0</td>\n      <td>0.051267</td>\n      <td>0.69956</td>\n      <td>0.002628</td>\n      <td>0.035864</td>\n      <td>0.489384</td>\n      <td>0.000135</td>\n      <td>0.001839</td>\n      <td>0.025089</td>\n      <td>0.342354</td>\n      <td>...</td>\n      <td>0.000900</td>\n      <td>0.012278</td>\n      <td>0.167542</td>\n      <td>1.815630e-08</td>\n      <td>2.477505e-07</td>\n      <td>0.000003</td>\n      <td>0.000046</td>\n      <td>0.000629</td>\n      <td>0.008589</td>\n      <td>0.117206</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1.0</td>\n      <td>-0.092742</td>\n      <td>0.68494</td>\n      <td>0.008601</td>\n      <td>-0.063523</td>\n      <td>0.469143</td>\n      <td>-0.000798</td>\n      <td>0.005891</td>\n      <td>-0.043509</td>\n      <td>0.321335</td>\n      <td>...</td>\n      <td>0.002764</td>\n      <td>-0.020412</td>\n      <td>0.150752</td>\n      <td>6.362953e-07</td>\n      <td>-4.699318e-06</td>\n      <td>0.000035</td>\n      <td>-0.000256</td>\n      <td>0.001893</td>\n      <td>-0.013981</td>\n      <td>0.103256</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1.0</td>\n      <td>-0.213710</td>\n      <td>0.69225</td>\n      <td>0.045672</td>\n      <td>-0.147941</td>\n      <td>0.479210</td>\n      <td>-0.009761</td>\n      <td>0.031616</td>\n      <td>-0.102412</td>\n      <td>0.331733</td>\n      <td>...</td>\n      <td>0.015151</td>\n      <td>-0.049077</td>\n      <td>0.158970</td>\n      <td>9.526844e-05</td>\n      <td>-3.085938e-04</td>\n      <td>0.001000</td>\n      <td>-0.003238</td>\n      <td>0.010488</td>\n      <td>-0.033973</td>\n      <td>0.110047</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>1.0</td>\n      <td>-0.375000</td>\n      <td>0.50219</td>\n      <td>0.140625</td>\n      <td>-0.188321</td>\n      <td>0.252195</td>\n      <td>-0.052734</td>\n      <td>0.070620</td>\n      <td>-0.094573</td>\n      <td>0.126650</td>\n      <td>...</td>\n      <td>0.017810</td>\n      <td>-0.023851</td>\n      <td>0.031940</td>\n      <td>2.780914e-03</td>\n      <td>-3.724126e-03</td>\n      <td>0.004987</td>\n      <td>-0.006679</td>\n      <td>0.008944</td>\n      <td>-0.011978</td>\n      <td>0.016040</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>1.0</td>\n      <td>-0.513250</td>\n      <td>0.46564</td>\n      <td>0.263426</td>\n      <td>-0.238990</td>\n      <td>0.216821</td>\n      <td>-0.135203</td>\n      <td>0.122661</td>\n      <td>-0.111283</td>\n      <td>0.100960</td>\n      <td>...</td>\n      <td>0.026596</td>\n      <td>-0.024128</td>\n      <td>0.021890</td>\n      <td>1.827990e-02</td>\n      <td>-1.658422e-02</td>\n      <td>0.015046</td>\n      <td>-0.013650</td>\n      <td>0.012384</td>\n      <td>-0.011235</td>\n      <td>0.010193</td>\n    </tr>\n  </tbody>\n</table>\n<p>5 rows × 28 columns</p>\n</div>"
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 构造数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data2.values  #直接获取特征映射后"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "(118, 28)"
     },
     "execution_count": 202,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = data.iloc[:, -1].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "(118, 1)"
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = y.reshape(len(y), 1)\n",
    "y.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 损失函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [],
   "source": [
    "def costFunction(X, y, theta, lamda):\n",
    "    A = sigmoid(X @ theta)\n",
    "\n",
    "    first = y * np.log(A)\n",
    "    second = (1 - y) * np.log(1 - A)\n",
    "\n",
    "    #正则化 防止过拟合（高维很容易过拟合）\n",
    "    reg = np.sum(np.power(theta[1:], 2)) * (lamda / (2 * len(X)))\n",
    "\n",
    "    return -np.sum(first + second) / len(X) + reg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "(28, 1)"
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "theta = np.zeros((28, 1))\n",
    "theta.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [],
   "source": [
    "lamda = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6931471805599454\n"
     ]
    }
   ],
   "source": [
    "cost_init = costFunction(X, y, theta, lamda)\n",
    "print(cost_init)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 梯度下降函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradientDescent(X, y, theta, alpha, iters, lamda):\n",
    "    costs = []\n",
    "\n",
    "    for i in range(iters):\n",
    "        # 每次都要重新获取reg 以及插入 因为权重参数theta一直在变\n",
    "        reg = theta[1:] * (lamda / len(X))\n",
    "        # 插入一行0  因为后面加减运算是28行  reg只有27行 去掉了常熟项的那个\n",
    "        reg = np.insert(reg, 0, values=0, axis=0)\n",
    "        theta = theta - (X.T @ (sigmoid(X @ theta) - y)) * alpha / len(X) - reg\n",
    "        cost = costFunction(X, y, theta, lamda)\n",
    "        costs.append(cost)\n",
    "\n",
    "        if i % 1000 == 0:\n",
    "            print(cost)\n",
    "\n",
    "    return theta, costs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [],
   "source": [
    "alpha = 0.001\n",
    "iters = 200000\n",
    "# lamda = 0.001\n",
    "# lamda = 0.1  #欠拟合\n",
    "lamda = 0  # 可能过拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6931343807989311\n",
      "0.6818206806253246\n",
      "0.6725971289020385\n",
      "0.6646379677059019\n",
      "0.657508287168547\n",
      "0.65097029603066\n",
      "0.6448863920430221\n",
      "0.6391710675858542\n",
      "0.6337669364681994\n",
      "0.6286326131025862\n",
      "0.6237364348265072\n",
      "0.619053091678459\n",
      "0.6145617252922241\n",
      "0.610244787625312\n",
      "0.6060873062331877\n",
      "0.6020763774927699\n",
      "0.5982007954908402\n",
      "0.5944507673456604\n",
      "0.5908176875019241\n",
      "0.5872939547758179\n",
      "0.5838728219030076\n",
      "0.5805482706585636\n",
      "0.5773149075635586\n",
      "0.5741678764125396\n",
      "0.5711027846746424\n",
      "0.5681156414061115\n",
      "0.5652028047516433\n",
      "0.5623609374547434\n",
      "0.5595869690712003\n",
      "0.5568780638021369\n",
      "0.5542315930453834\n",
      "0.5516451119142164\n",
      "0.54911633909691\n",
      "0.5466431395337273\n",
      "0.5442235094737118\n",
      "0.5418555635449315\n",
      "0.5395375235311951\n",
      "0.5372677085977076\n",
      "0.5350445267493931\n",
      "0.5328664673400184\n",
      "0.5307320944790247\n",
      "0.5286400412070043\n",
      "0.5265890043308895\n",
      "0.5245777398267724\n",
      "0.5226050587324047\n",
      "0.5206698234632965\n",
      "0.5187709444962906\n",
      "0.5169073773728818\n",
      "0.5150781199816011\n",
      "0.5132822100847406\n",
      "0.5115187230597155\n",
      "0.5097867698296029\n",
      "0.508085494960985\n",
      "0.506414074910271\n",
      "0.5047717164022426\n",
      "0.5031576549267694\n",
      "0.5015711533414976\n",
      "0.5000115005699033\n",
      "0.4984780103854649\n",
      "0.4969700202738564\n",
      "0.49548689036606547\n",
      "0.49402800243618633\n",
      "0.49259275895837124\n",
      "0.49118058221805383\n",
      "0.489790913473105\n",
      "0.4884232121610483\n",
      "0.48707695514887644\n",
      "0.48575163602236204\n",
      "0.4844467644120651\n",
      "0.4831618653535179\n",
      "0.481896478679293\n",
      "0.48065015844088427\n",
      "0.47942247235850044\n",
      "0.4782130012970454\n",
      "0.47702133876669767\n",
      "0.47584709044662876\n",
      "0.47468987373052546\n",
      "0.47354931729266764\n",
      "0.4724250606734196\n",
      "0.47131675388307115\n",
      "0.47022405702303627\n",
      "0.4691466399234918\n",
      "0.4680841817965968\n",
      "0.46703637090448774\n",
      "0.46600290424130136\n",
      "0.4649834872285213\n",
      "0.463977833422987\n",
      "0.46298566423694487\n",
      "0.4620067086695585\n",
      "0.46104070304932804\n",
      "0.46008739078690064\n",
      "0.45914652213778373\n",
      "0.4582178539744986\n",
      "0.45730114956773843\n",
      "0.45639617837611735\n",
      "0.4555027158441228\n",
      "0.45462054320789513\n",
      "0.4537494473084914\n",
      "0.4528892204122951\n",
      "0.45203966003825724\n",
      "0.4512005687916724\n",
      "0.45037175420420045\n",
      "0.44955302857986734\n",
      "0.44874420884678656\n",
      "0.4479451164143554\n",
      "0.4471555770356971\n",
      "0.4463754206751217\n",
      "0.4456044813804018\n",
      "0.4448425971596561\n",
      "0.4440896098626531\n",
      "0.44334536506635264\n",
      "0.4426097119645072\n",
      "0.441882503261164\n",
      "0.44116359506790326\n",
      "0.4404528468046656\n",
      "0.4397501211040228\n",
      "0.4390552837187555\n",
      "0.4383682034326046\n",
      "0.43768875197407237\n",
      "0.43701680393315345\n",
      "0.4363522366808802\n",
      "0.4356949302915732\n",
      "0.4350447674676919\n",
      "0.43440163346718547\n",
      "0.4337654160332483\n",
      "0.4331360053263876\n",
      "0.4325132938587158\n",
      "0.4318971764303835\n",
      "0.4312875500680734\n",
      "0.4306843139654751\n",
      "0.4300873694256721\n",
      "0.4294966198053648\n",
      "0.428911970460866\n",
      "0.42833332869580076\n",
      "0.42776060371045066\n",
      "0.42719370655268135\n",
      "0.4266325500703963\n",
      "0.42607704886546294\n",
      "0.4255271192490562\n",
      "0.4249826791983714\n",
      "0.42444364831465603\n",
      "0.4239099477825148\n",
      "0.4233815003304431\n",
      "0.422858230192545\n",
      "0.42234006307139604\n",
      "0.42182692610200984\n",
      "0.42131874781687073\n",
      "0.4208154581119967\n",
      "0.4203169882139957\n",
      "0.41982327064808317\n",
      "0.4193342392070273\n",
      "0.4188498289209906\n",
      "0.4183699760282389\n",
      "0.4178946179466874\n",
      "0.4174236932462559\n",
      "0.4169571416220081\n",
      "0.41649490386804705\n",
      "0.4160369218521436\n",
      "0.4155831384910727\n",
      "0.41513349772663477\n",
      "0.41468794450234153\n",
      "0.41424642474074114\n",
      "0.41380888532136667\n",
      "0.4133752740592853\n",
      "0.4129455396842285\n",
      "0.41251963182028806\n",
      "0.41209750096615594\n",
      "0.4116790984758935\n",
      "0.41126437654021497\n",
      "0.4108532881682642\n",
      "0.4104457871698735\n",
      "0.41004182813829043\n",
      "0.40964136643335364\n",
      "0.4092443581651083\n",
      "0.40885076017784533\n",
      "0.40846053003455396\n",
      "0.4080736260017711\n",
      "0.40769000703482045\n",
      "0.4073096327634261\n",
      "0.40693246347769063\n",
      "0.406558460114428\n",
      "0.4061875842438376\n",
      "0.4058197980565149\n",
      "0.40545506435078144\n",
      "0.40509334652033174\n",
      "0.40473460854218407\n",
      "0.40437881496492745\n",
      "0.4040259308972547\n",
      "0.4036759219967785\n",
      "0.40332875445911354\n",
      "0.40298439500722666\n",
      "0.40264281088104087\n",
      "0.40230396982728844\n",
      "0.4019678400896064\n",
      "0.4016343903988668\n",
      "0.4013035899637353\n",
      "0.400975408461452\n",
      "0.40064981602882976\n",
      "0.4003267832534595\n",
      "0.40000628116512266\n"
     ]
    }
   ],
   "source": [
    "theta_final, costs = gradientDescent(X, y, theta, alpha, iters, lamda)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(X, theta):\n",
    "    prob = sigmoid(X @ theta)\n",
    "\n",
    "    return [1 if x >= 0.5 else 0 for x in prob]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8135593220338984\n"
     ]
    }
   ],
   "source": [
    "y_ = np.array(predict(X, theta_final))\n",
    "y_pre = y_.reshape(len(y_), 1)\n",
    "\n",
    "acc = np.mean(y_pre == y)\n",
    "\n",
    "print(acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(200, 200)\n",
      "(40000, 28)\n",
      "theta_final (28, 1)\n",
      "(40000,)\n",
      "zz.shape (40000, 1)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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Foul82BHDcGFI3sFuM5eZWaqI3tFpAIMhoiIApHFAmza5Dp7ZbWKGSGls1dEKsFgiIgoUKk9e0WkEhxATURERLrGYIiIiIh0jcEQERER6RqDISIiItI1BkNERESkawyGiIiISNcYDBEREZGuMRgiIiIiXWMwRERERLrGYIiIiIh0jcEQERER6RqDISIiItI1BkNERESkawyGiIiISNcYDBEREZGuMRgiIiIiXWMwRERERLrGYIiIiIh0jcEQERER6RqDISIiItI1BkNERESkawyGiIiISNcYDBEREZGuMRgiIiIiXWMwRERERLqmmWDo6aefxqRJkxAeHo6YmBi3HiMIApYvX45evXohLCwMmZmZOHTokLwNJSIiIk3RTDDU0NCA+fPn45e//KXbj/nrX/+K559/Hi+99BK+/fZbJCUl4dprr0VVVZWMLSUiIiIt0Uww9OSTT+LBBx/E8OHD3dpfEASsWLECjz32GObOnYthw4bh3XffRU1NDVavXi1za4mIiEgrNBMMeSonJwfFxcWYPn166zaz2YwpU6Zg165dnT6uvr4elZWVTjciIiIKXAEbDBUXFwMAEhMTnbYnJia23ufKM888A4vF0nqzWq2ytpOIiIiUpWgwtHz5chgMhi5ve/fu9ekcBoPB6WdBEDpsa+uRRx6BzWZrveXn5/t0fiIiIlK3ICVPft999+G2227rcp+0tDSvjp2UlARAzBAlJye3bi8pKemQLWrLbDbDbDZ7dU4iIiLSHkWDofj4eMTHx8ty7L59+yIpKQlbtmzBqFGjAIgz0rZt24Znn31WlnMSERGR9mhmzFBeXh4OHDiAvLw82O12HDhwAAcOHEB1dXXrPoMHD8ZHH30EQOweW7ZsGf785z/jo48+wo8//oglS5YgPDwcCxcuVOrXICIiIpVRNDPkiccffxzvvvtu68+ObE92djYyMzMBAMeOHYPNZmvd5/e//z1qa2tx7733ory8HOPHj8fmzZsRFRXl17YTERGRehkEQRCUboSaVVZWwmKxwGazITo6WunmEBERkRs8+fzWTDcZERERkRwYDBEREZGuMRgiIiIiXWMwRERERLrGYIiIiIh0jcEQERER6RqDISIiItI1BkNERESkawyGiIiISNcYDBEREZGuMRgiIiIiXWMwRERERLrGYIiIiIh0jcEQERER6RqDISIiItI1BkNERESkawyGiIiISNcYDBEREZGuMRgiIiIiXWMwRERERLrGYIiIiIh0jcEQERER6RqDISIiItK1IKUboHaCIAAAKisrFW4JERERucvxue34HO8Kg6FuVFVVAQCsVqvCLSEiIiJPVVVVwWKxdLmPQXAnZNKx5uZmnD17FlFRUTAYDEo3x6XKykpYrVbk5+cjOjpa6eZQO3x91IuvjXrxtVE3Lbw+giCgqqoKvXr1gtHY9aggZoa6YTQakZKSonQz3BIdHa3aP0ri66NmfG3Ui6+Nuqn99ekuI+TAAdRERESkawyGiIiISNcYDAUAs9mMJ554AmazWemmkAt8fdSLr4168bVRt0B7fTiAmoiIiHSNmSEiIiLSNQZDREREpGsMhoiIiEjXGAwRERGRrjEY0qinn34akyZNQnh4OGJiYtx6jCAIWL58OXr16oWwsDBkZmbi0KFD8jZUh8rLy7Fo0SJYLBZYLBYsWrQIFRUVXT5myZIlMBgMTrcJEyb4p8EB7pVXXkHfvn0RGhqKMWPGYMeOHV3uv23bNowZMwahoaFIT0/Ha6+95qeW6o8nr83WrVs7vEcMBgOOHj3qxxbrw/bt23H99dejV69eMBgM+Pjjj7t9jNbfNwyGNKqhoQHz58/HL3/5S7cf89e//hXPP/88XnrpJXz77bdISkrCtdde27r+Gklj4cKFOHDgADZt2oRNmzbhwIEDWLRoUbePmzlzJoqKilpvGzdu9ENrA9uaNWuwbNkyPPbYY9i/fz8yMjIwa9Ys5OXludw/JycHs2fPRkZGBvbv349HH30U999/P9atW+fnlgc+T18bh2PHjjm9TwYMGOCnFuvHxYsXMXLkSLz00ktu7R8Q7xuBNO3tt98WLBZLt/s1NzcLSUlJwl/+8pfWbXV1dYLFYhFee+01GVuoL4cPHxYACHv27Gndtnv3bgGAcPTo0U4ft3jxYmHOnDl+aKG+jBs3Trjnnnuctg0ePFh4+OGHXe7/+9//Xhg8eLDTtl/84hfChAkTZGujXnn62mRnZwsAhPLycj+0jhwACB999FGX+wTC+4aZIZ3IyclBcXExpk+f3rrNbDZjypQp2LVrl4ItCyy7d++GxWLB+PHjW7dNmDABFoul2+d569atSEhIwMCBA7F06VKUlJTI3dyA1tDQgH379jn9zQPA9OnTO30tdu/e3WH/GTNmYO/evWhsbJStrXrjzWvjMGrUKCQnJ+Oaa65Bdna2nM0kNwXC+4bBkE4UFxcDABITE522JyYmtt5HvisuLkZCQkKH7QkJCV0+z7NmzcJ7772HL7/8En/729/w7bff4uqrr0Z9fb2czQ1opaWlsNvtHv3NFxcXu9y/qakJpaWlsrVVb7x5bZKTk/H6669j3bp1yMrKwqBBg3DNNddg+/bt/mgydSEQ3jdctV5Fli9fjieffLLLfb799luMHTvW63MYDAannwVB6LCNOnL3tQE6PsdA98/zrbfe2vr/YcOGYezYsUhNTcWGDRswd+5cL1tNgOd/8672d7WdfOfJazNo0CAMGjSo9eeJEyciPz8fzz33HK666ipZ20nd0/r7hsGQitx333247bbbutwnLS3Nq2MnJSUBECP45OTk1u0lJSUdInrqyN3X5ocffsC5c+c63Hf+/HmPnufk5GSkpqbixIkTHreVRPHx8TCZTB0yDV39zSclJbncPygoCHFxcbK1VW+8eW1cmTBhAv71r39J3TzyUCC8bxgMqUh8fDzi4+NlOXbfvn2RlJSELVu2YNSoUQDEfvtt27bh2WefleWcgcTd12bixImw2Wz45ptvMG7cOADA119/DZvNhkmTJrl9vrKyMuTn5zsFruSZkJAQjBkzBlu2bMFNN93Uun3Lli2YM2eOy8dMnDgR69evd9q2efNmjB07FsHBwbK2V0+8eW1c2b9/P98jKhAQ7xslR2+T986cOSPs379fePLJJ4XIyEhh//79wv79+4WqqqrWfQYNGiRkZWW1/vyXv/xFsFgsQlZWlnDw4EFhwYIFQnJyslBZWanErxCwZs6cKYwYMULYvXu3sHv3bmH48OHCdddd57RP29emqqpK+M1vfiPs2rVLyMnJEbKzs4WJEycKvXv35mvjow8++EAIDg4W3nzzTeHw4cPCsmXLhIiICCE3N1cQBEF4+OGHhUWLFrXuf/r0aSE8PFx48MEHhcOHDwtvvvmmEBwcLKxdu1apXyFgefravPDCC8JHH30kHD9+XPjxxx+Fhx9+WAAgrFu3TqlfIWBVVVW1fqYAEJ5//nlh//79wpkzZwRBCMz3DYMhjVq8eLEAoMMtOzu7dR8Awttvv936c3Nzs/DEE08ISUlJgtlsFq666irh4MGD/m98gCsrKxNuv/12ISoqSoiKihJuv/32DtOB2742NTU1wvTp04WePXsKwcHBQp8+fYTFixcLeXl5/m98AHr55ZeF1NRUISQkRBg9erSwbdu21vsWL14sTJkyxWn/rVu3CqNGjRJCQkKEtLQ04dVXX/Vzi/XDk9fm2WefFfr16yeEhoYKPXr0EK688kphw4YNCrQ68DnKGLS/LV68WBCEwHzfGAShZZQTERERkQ5xaj0RERHpGoMhIiIi0jUGQ0RERKRrDIaIiIhI1xgMERERka4xGCIiIiJdYzBEREREusZgiIiIiHSNwRARERHpGoMhItIkg8HQ5W3JkiVeHzstLQ0rVqxw2lZXV4clS5Zg+PDhCAoKwo033uhT+4lIPbhqPRFpUlFRUev/16xZg8cffxzHjh1r3RYWFibp+ex2O8LCwnD//fdj3bp1kh6biJTFzBARaVJSUlLrzWKxwGAwOG3bvn07xowZg9DQUKSnp+PJJ59EU1NT6+OXL1+OPn36wGw2o1evXrj//vsBAJmZmThz5gwefPDB1iwTAERERODVV1/F0qVLkZSUpMjvTETyYGaIiALO559/jp/+9Kf4+9//joyMDJw6dQo///nPAQBPPPEE1q5dixdeeAEffPABhg4diuLiYnz//fcAgKysLIwcORI///nPsXTpUiV/DSLyEwZDRBRwnn76aTz88MNYvHgxACA9PR1//OMf8fvf/x5PPPEE8vLykJSUhGnTpiE4OBh9+vTBuHHjAACxsbEwmUyIiopiBohIJ9hNRkQBZ9++fXjqqacQGRnZelu6dCmKiopQU1OD+fPno7a2Funp6Vi6dCk++ugjpy40ItIXZoaIKOA0NzfjySefxNy5czvcFxoaCqvVimPHjmHLli344osvcO+99+L//u//sG3bNgQHByvQYiJSEoMhIgo4o0ePxrFjx9C/f/9O9wkLC8MNN9yAG264Ab/61a8wePBgHDx4EKNHj0ZISAjsdrsfW0xESmIwREQB5/HHH8d1110Hq9WK+fPnw2g04ocffsDBgwfxpz/9Ce+88w7sdjvGjx+P8PBwrFq1CmFhYUhNTQUg1hnavn07brvtNpjNZsTHxwMADh8+jIaGBly4cAFVVVU4cOAAAODyyy9X6DclIikwGCKigDNjxgx8+umneOqpp/DXv/4VwcHBGDx4MO6++24AQExMDP7yl7/goYcegt1ux/Dhw7F+/XrExcUBAJ566in84he/QL9+/VBfXw9BEAAAs2fPxpkzZ1rPM2rUKABovZ+ItMkg8F1MREREOsbZZERERKRrDIaIiIhI1xgMERERka4xGCIiIiJdYzBEREREusZgiIiIiHSNwRARERHpGoMhIiIi0jUGQ0RERKRrDIaIiIhI1xgMERERka79f3nHYcRHGW4PAAAAAElFTkSuQmCC\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(-1.2, 1.2, 200)\n",
    "xx, yy = np.meshgrid(x, x)  # 生成网格200*200共40000个点  从-1.2到1.2的连续~~\n",
    "print(xx.shape)\n",
    "z = feature_mapping(xx.ravel(), yy.ravel(), 6).values  #  ravel变成40000行的向量 从而可以和theta运算  一个6次型函数共28列\n",
    "print(z.shape)\n",
    "print(\"theta_final\", theta_final.shape)\n",
    "print(xx.ravel().shape)\n",
    "zz = z @ theta_final  # zz是在计算对应x，y的高度\n",
    "print(\"zz.shape\", zz.shape)\n",
    "zz = zz.reshape(xx.shape)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(data[data['Accepted'] == 0]['Test 1'], data[data['Accepted'] == 0]['Test 2'], c='r', marker='x', label='y=0')\n",
    "ax.scatter(data[data['Accepted'] == 1]['Test 1'], data[data['Accepted'] == 1]['Test 2'], c='b', marker='o', label='y=1')\n",
    "ax.legend()\n",
    "ax.set(xlabel='Test1',\n",
    "       ylabel='Test2')\n",
    "\n",
    "plt.contour(xx, yy, zz, 0)  # 三维 等于0的那条线\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
